Вот список примеров примеров регулярных выражений php. возможно, это помогает кому-то, поскольку администратор/или другой пользователь не может понять, что я пытался поделиться своими подходами.
preg_match выполняет поиск (preg_replace является заменителем).
preg_match имеет три параметра - preg_match (FindWhat, FindWhere, GivingOutput);
пример 1):
<?php
//everything expect letters and numbers
$text='[email protected]';
$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 Джимми Джонс, его я. hello user 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 = '[email protected]*&^)($%';
preg_match_all('/[^a-zA-Z0-9.]/',$text,$out);
foreach ($out[0] as $varr) {echo $varr;}
?>
output will be:
@*&^)($%
для ПОИСК и ЗАМЕНИТЕ, у нас немного другая структура, так как нам нужно использовать новую переменную.
пример 9): найдите и замените все , а не буквы и цифры другим символом, используя этот оператор: ^
<?php
$text = 'ab2sq)(&*(%$%^[email protected]%n23f9';
$variable = preg_replace('/[^a-zA-Z0-9.]/','a',$text);
echo $variable;
?>
output will be:
ab2sqn23f9
пример 10): найдите и добавьте что-то внутри найденных resuls:
<?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 или см. ** ПОЛНЫЕ ОПЦИИ И РУКОВОДСТВА at - 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, вам может не понадобиться синтаксический анализатор.