2014-01-03 1 views
0

Может ли кто-нибудь объяснить мне, почему мой код ничего мне не возвращает?PHP Preg_Replace, «начинается с» не работает

<?php 
    $text = '<article about="about_text" typeof="sioc:Item foaf:Document" class="node node-bildergalerie node-published node-not-promoted node-not-sticky author-lalala odd clearfix" id="node-bildergalerie-6835">'; 
    $search_for = '(author\-.*?)\s'; 
    $replace = ''; 
    print preg_replace($search_for, $replace, $text); 
?> 
+1

'$ search_for = '/ (автор \ - *.?) \ S /';' – Leri

+0

работы, спасибо u! :-) – Basti

ответ

2

Вы упускаете delimiters:

$search_for = '~(author\-\w+)\s~'; 

Также изменил non-greedy.*? к \w+ где \w является shorthand для символов слова так один или более [a-zA-Z_0-9]

+0

Работы, спасибо, есть ли разница между '~' и '/'? – Basti

+0

Это зависит от вас, лучше всего выбрать что-то не очень общее :) –

+0

@ Jonny5 Лучше всего выбрать наиболее читаемый. – Leri

1

Это не хорошо сформирован регулярным выражение. Вам нужно добавить разделители:

<?php 
    $text = '<article about="about_text" typeof="sioc:Item foaf:Document" class="node node-bildergalerie node-published node-not-promoted node-not-sticky author-lalala odd clearfix" id="node-bildergalerie-6835">'; 
    $search_for = '/(author\-.*?)\s/'; 
    $replace = ''; 
    print preg_replace($search_for, $replace, $text); 
?> 

Проверьте это в этой скрипке: http://codepad.org/WSNCktk0

Смежные вопросы