2016-07-30 3 views
-2

Я хочу удалить ненужный текст из строки.preg_match удалить ненужный текст из строки

$description = 'this is some huge text <a href="http://example.com/dynamicID">dynamicID</a><br> and some more text here'; 

preg_match('/(example.com([^&]*)?)"/',$description,$matches); 

$part = $matches[1]; 

echo $part; //returning example.com/dynamicID">dynamicID</a><br> and... 

Но я хочу только (example.com/dynamicID) и удалить остальную часть текста из строки.

Что мне здесь не хватает?

+0

Не воспроизводимый. https://eval.in/614467 Я подозреваю, что '$ description' отличается от остальных. – chris85

+0

Да, это не так, как предусмотрено, потому что '$ description' является динамичным и разным во все времена, но example.com/dynamicID фокусируется на извлечении – KenDev

+0

change' (example.com ([^ &] *)?) 'To' (example.com ([^ "] *)?)' Замените '[^ &]' на '[^"] 'Поскольку нет' & ', но есть' '' see: https: // regex101. com/r/cG9kS3/1 – ArtisticPhoenix

ответ

1

Вы близко. Я предполагаю, что вы хотите взять URL часть текста (он же до закрывающей кавычки на <a> теге.

Все, что вам нужно сделать, это добавить ?" после ), чтобы убедиться, что вы пытаетесь соответствовать как можно короче любым символам перед тем, как делать цитату.

Выполнение этого, однако, итоговые $ matches [0] также будут содержать символ кавычки. Вы можете исправить это, добавив группу к тому, что вы на самом деле хотите совместить, и возьмите $ matches [1] в качестве результата Ниже приведен ваш код с 2 изменениями, упомянутыми выше:

$description = 'this is some huge text <a href="http://example.com/dynamicID">dynamicID</a><br> and some more text here'; 

preg_match('/(example.com([^&]*)?)"/',$description,$matches); 

var_dump($matches); 

Выходной сигнал выглядит следующим образом:

array(3) { 
    [0]=> 
    string(22) "example.com/dynamicID"" 
    [1]=> 
    string(21) "example.com/dynamicID" 
    [2]=> 
    string(10) "/dynamicID" 
} 
+0

Я обновил свой вопрос в соответствии с вашим предложением, но его все тот же результат – KenDev

+0

Я просто попробовал скопировать код в свой вопрос и запустить его , он работает для меня. Попробуйте 'var_dump ($ matches)', чтобы увидеть, что вы на самом деле получаете. – maresa

+0

ok Я получаю это с помощью 'var_dump ($ matches)' results 'array (3) {[0] => string (3274) "example.come/dynamicID" dynamicID
и ... ' – KenDev

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