我有两个字符串
$string1 = "� 2~07225~ 3~0430~ 4~01254~ 5~0853~* 7~08064~ 8~0853~ 10~0776~."
$string2 = "from the start Lisa drafted the paper for the project."
我需要一个字符串(echo)输出,该输出应该如下(数字上标):
“从一开始(07225)Lisa(0430)起草(01254)*(0853)论文(08064)为*(0853)项目(0776)。”
我应该使用带有str_replace
语句的explode
和正则表达式吗?
* 表示为形容词中的隐形填充,例如“蓝色”(853)纸和“科学”(853)项目。
任何人都可以接受挑战?
我花了无数个小时试图解决这个问题。
请记住php从0开始算......
JC
答案 0 :(得分:3)
听起来像是家庭作业,所以我会给你关键的指针,而不是代码。
分词是最简单的,确实使用爆炸:
$words = explode(" ", $string2);
正则表达式也很简单:
preg_match_all('#(\d+)~(\d+)~([*]?)#', $string1, $matches,
PREG_SET_ORDER);
你基本上必须超过$ match。您将在[1]中找到单词index,在[2]中找到填充号:
foreach ($matches as $row) {
list( , $word_index, $fill_number, $asteriskthingy) = $row;
要汇编输出字符串,您需要:
array_slice
。*
应该表达的意思。你没有解释这种变化背后的逻辑,所以;不知道。