Ниже приведен список примеров примеров регулярных выражений php. возможно, это помогает кому-то, поскольку администратор / или другой пользователь не может понять, что я пытался поделиться своими подходами.
preg_match выполняет поиск (preg_replace является заменой).
preg_match имеет три параметра – preg_match (FindWhat, FindWhere, GivingOutput);
пример 1) :
<?php //everything expect letters and numbers $text='abc345fg@h'; $newfilename=preg_match('/[^a-zA-Z0-9.]/',$text, $out); echo $out[0]; ?> output will be: @
preg_match находит только один результат (первый найденный результат) с двумя параметрами: [0] или [1].
пример 2) : найти все (любые символы, слова ..) в наших критериях поиска:
<?php $text='abcdefghijklmnopqrst'; $newfilename=preg_match('/ij(.*?)mn/',$text, $out); echo $out[0]; echo $out[1]; ?> [1] -gives only the inner search result (what we had in the brackets, between "ij" and "mn"): kl [0] -gives the whole search result: ijklmn
(Обратите внимание: эта опция [1] недоступна, если вы не используете скобки в критериях поиска (как мы уже указывали выше, в примере 1)
пример 3) : если ваш целевой текст имеет много одинаковых событий, например: $ text = 'hello user Jimmy Jones , его я. привет, пользователь Mery Pawders , его все еще я. ';
теперь, вот два разных совпадения, поэтому нам нужно использовать preg_match_all
<?php $text='hello user Jimmy Jones, its me. hello user Mery Pawders, its me.'; $newfilename=preg_match_all('/hello user (.*?) its/',$text, $out); foreach ($out[1] as $found_one) {echo $found_one;} //or use $out[0] for full search match ?> output will be: Jimmy Jones, Mery Pawders,
пример 4) : поиск среди множества возможностей:
<?php $text = 'member ACCOUNT7'; preg_match("/ACCOUNT[123456789]/",$text,$out); echo $out[1]; ?> output will be: ACCOUNT7
пример 5) : Чтобы найти строку, в то время как текст ввода содержит новые строки, вы должны использовать ** s ** в конце;
<?php $text = 'one two three'; preg_match("/one(.*?)three/s",$text,$out); echo $out[1]; ?> output will be: two
пример 6) : ваш поиск всегда чувствителен к регистру. Чтобы сделать случай INSENSITIVE, используйте i в конце (если хотите, без s );
<?php $text = 'ONE TWO TREE'; preg_match("/one(.*?)three/si",$text,$out); echo $out[1]; ?>
пример 7) : для поиска специальных символов (например, /".<* '? и т. д.) внутри preg_match вам нужно использовать этот escape-знак: \
<?php $text = 'hello Jimmy/Kroger '; preg_match("/Jimmy\/Kroger/",$text,$out); echo $out[0]; ?>
теперь мы можем использовать оператор ^, который ищет результаты обратно.
пример 8) : найти все, а не буквы и цифры:
<?php $text = 'abc@*&^)($%'; preg_match_all('/[^a-zA-Z0-9.]/',$text,$out); foreach ($out[0] as $varr) {echo $varr;} ?> output will be: @*&^)($%
для SEARCH и REPLACE у нас немного другая структура, так как нам нужно использовать новую переменную.
пример 9) : найти и заменить все, а не буквы и цифры другим символом, используя этот оператор: ^
<?php $text = 'ab2sq)(&*(%$%^$@%n23f9'; $variable = preg_replace('/[^a-zA-Z0-9.]/','a',$text); echo $variable; ?> output will be: ab2sqn23f9
пример 10) : найдите и добавьте что-то внутри найденных результатов:
<?php $text = 'Hi, its me, Niko from Austria'; $variable = preg_replace('/(Niko.*?) from/', '$1 Gomez', $text); echo $variable; ?> output will be : its me, Niko Gomez Austria
пример 11) : найти все ссылки внутри текста:
<?php $text = 'hi, my site is http://example.com, and on my page, at http://example.com/page37/blabla.html i wrote something..'; preg_match_all("/[[:alpha:]]+:\/\/[^<>[:space:]]+[[:alnum:]\/]/",$text, $out); foreach($out[0] as $varr){echo $varr;} ?> output will be: http://example.com http://example.com/page37/blabla.html
пример 12) : как пример 11 (но с заменой) – найдите ссылки в тексте и поместите их в привязанные теги:
<?php $text = 'hi, my site is http://example.com, and on my page, at http://example.com/page37/trid.html i wrote something..'; $variable = preg_replace("/[[:alpha:]]+:\/\/[^<>[:space:]]+[[:alnum:]\/]/",'<a href="\\0">\\0</a>', $text); echo $variable; ?>
вывод будет тем же предложением, но ссылки будут привязаны.
1) Советы. Не используйте preg_match (), если вы хотите только проверить, содержится ли одна строка в другой строке. Вместо этого используйте stristr () или strpos (), поскольку они будут быстрее.
2) ** более продвинутые конкретные примеры о регулярных выражениях php, используйте google или см. ** ПОЛНЫЕ ВАРИАНТЫ И РУКОВОДСТВА по адресу: http://www.php.net/manual/en/reference.pcre.pattern.syntax.php
(В скором времени вы можете просмотреть список всех операторов –
http://www.catswhocode.com/blog/15-php-regular-expressions-for-web-developers
http://www.noupe.com/php/php-regular-expressions.html
)
3) для hmtl-кодов существует специальный свет, php soft, называемый Dom Parser. но иногда, если вы хорошо знаете регулярные выражения php, вам может не понадобиться парсер.
Попробуйте это регулярное выражение:
/^Shop.*0$/i
Это проверяет магазин в начале и ноль в конце.
Я предполагаю, что когда вы говорите «$ email», вы имеете в виду материал перед знаком @
. В этом случае вы можете использовать это регулярное выражение:
$email = 'SHOP_psgarden_0@somewhere.com'; if (preg_match('/^shop.*0@/i', $email) === 1) { echo 'Yes!'; }
Вы также можете проверить, используя обычный процедурный код:
$email = 'SHOP_psgarden_0@somewhere.com'; $local = substr($email, 0, strpos($email, '@')); $amalgam = substr($local, 0, 4) . substr($local, -1); if (strcasecmp('shop0', $amalgam) === 0) { echo "yes"; } else { echo "no"; }