2016-07-30 59 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

改变其不同的'(example.com([^&*)?)''来(example.com([^“] *)?)'用'[^”]替换'[^&]'因为没有'&'但是有一个'''见:https:// regex101。 COM/R/cG9kS3/1 – ArtisticPhoenix

回答

1

你接近。我假设你想利用文本(收盘报价之前又名的URL部分上<a>标签。

所有你所要做的就是)后添加?",以确保您尝试匹配尽可能短的任何字符

但是,这样做的结果是$ matches [0]也会包含引号字符,你可以通过添加group来匹配你想要匹配的内容,并以$ 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($匹配)'来看看你实际得到的。 – maresa

+0

OK我收到此使用'的var_dump($匹配)'结果'阵列(3){[0] =>字符串(3274 )“example.come/dynamicID”dynamicID
and ...' – KenDev

相关问题