Cho một chuỗi, ví dụ:PHP có được vị trí của mỗi ký tự đầu tiên trong một chuỗi thành một mảng
$string = " this is a string ";
phương pháp tốt nhất để trả lại một mảng csv chứa một số cho mỗi từ mà đại diện đầu tiên của mình là gì nhân vật vị trí như thế này:
$string = " this is a string ";
^ ^^^
2 11 16 20
Lý tưởng nhất là đầu ra sẽ chỉ là một mảng:
2,11,16,20
Cho đến nay, đây là những gì tôi có nhưng tôi nghĩ rằng đây là một chút trên đầu của tôi cho kỹ năng hạn chế của tôi:
$string = " this is a string ";
$string = rtrim($string); //just trim the right sides spaces
$len = strlen($string);
$is_prev_white = true;
$result = "";
for($i = 0; $i <= $len; $i++) {
$char = substr($string,$i,1);
if(!preg_match("/\s/", $char) AND $prev_white){
$result .= $i.",";
$prev_white = false;
}else{
$prev_white = true;
}
}
echo $result;
Tôi nhận: 2,4,11,16,20,22,24, 26
Điều này có vẻ là câu trả lời đúng nhưng tôi không thể đưa chúng vào định dạng '2,11,16,20' mà tôi đang cố gắng. Cách dễ nhất để đến danh sách csv như được hiển thị là gì? –
@TripleC, cách dễ nhất để có được những mảng với chuỗi offsets thành chuỗi csv là sử dụng hàm 'implode':' var_dump (implode (",", $ matches [0])); 'cho' string '2, 11,16,20'' – RomanPerekhrest
Tôi có một câu hỏi khác. Một vài từ của tôi có biểu tượng bên trong chúng như, ví dụ, 'ca # t' Làm thế nào tôi có thể sửa regex này để bao gồm các từ có ký hiệu trong đó? –