此文本块表示作为变量的原始外部源:
// the following characters are not-consistent
text here
// the following characters are consistent
♥ text1
♥ text2
♥ text3
// the following characters are consistent
some more text here
我想删除除"text here"
以外的所有内容,我必须在'部分'中执行此操作,因为其他文本可能存在(即我不能删除"text here"
之后的所有内容)。
我可以删除"some more text here"
,但我无法尝试定位并删除以♥开头的行(或者因为它们当前存储在数据库中)。
所以这些是我的变量
// this is the original external source
$part_one = $external_source;
// this is the variable that is not working yet
$part_one_a = ;
// this replaces "some more text here" with nothing
$part_one_b = str_replace("some more text here", " ", $part_one);
// this concatenates the variables $part_one_a and $part_one_b
$final = $part_one_a . $part_one_b;
谢谢你。
更新
更具体一点,我需要一种方法来删除这样的文字:
♥ link_one: http://link_one_here.com/
♥ link_two: http://link_two_here.com/
♥ link_three: http://link_three_here.com/
更新两个
我设法用数组上的str_replace删除所有不需要的项目。
我唯一无法瞄准并因此删除的是♥。
我尝试过以下目标:
♥
(这是当前存储在中的值
数据库)♥
(在我对字符串应用了一个htmlentities之后)没有运气 - ♥仍然在显示。如果有人能告诉我如何瞄准♥会非常感激,这个问题将得到解决。
谢谢你。答案 0 :(得分:2)
如果我理解正确你需要♥之前的所有text here
你可以使用strpos
$stopper = '♥';
$string = 'text here
♥ text1
♥ text2
♥ text3
some more text here' ;
$final = trim(substr($string,0,strpos($string, $stopper)));
var_dump($final);
输出
string 'text here' (length=9)
请注意,您的$stopper
也可以是\n
新行
答案 1 :(得分:0)
解决方案是:
这导致显示所有期望的值而没有不可接受的字符的实例。
最后两个步骤的代码如下:
// this is the original external source
$part_one = $external_source;
// create a regex
$regex
= '~'
. '['
. '^'
. 'A-Z'
. '0-9'
. ' '
. '!_:/,.#$-'
. ']'
. '~'
. 'i'
;
// clean the string
$part_one_cleaned = preg_replace($regex, NULL, $part_one);