Programming

PHP에서 문장의 첫 단어를 얻는 방법?

procodes 2020. 6. 23. 22:10
반응형

PHP에서 문장의 첫 단어를 얻는 방법?


문자열에서 변수의 첫 단어를 추출하고 싶습니다. 예를 들어 다음 입력을 사용하십시오.

<?php $myvalue = 'Test me more'; ?>

결과 출력은 Test입력의 첫 단어 인 이어야합니다 . 어떻게해야합니까?


다음과 같이 분해 기능을 사용할 수 있습니다 .

$myvalue = 'Test me more';
$arr = explode(' ',trim($myvalue));
echo $arr[0]; // will print Test

문자열 함수 ( strtok )가 있습니다.이 함수 는 문자열을 일부 구분 기호를 기반 으로 작은 문자열 ( 토큰 ) 로 나누는 데 사용할 수 있습니다 . 이 스레드의 목적을 위해 공백 문자 에서 문자열을 토큰 화 하여 첫 번째 단어 (첫 번째 공백 문자 앞에있는 것으로 정의 됨)를 Test me more얻을 수 있습니다 .

<?php
$value = "Test me more";
echo strtok($value, " "); // Test
?>

자세한 내용과 예제는 strtok PHP 매뉴얼 페이지를 참조하십시오 .


PHP 5.3이있는 경우

$myvalue = 'Test me more';
echo strstr($myvalue, ' ', true);

이 경우 $myvalue단어 strstr하나 인 문자열은 아무 것도 반환하지 않습니다. 해결책은 테스트 문자열에 공백을 추가하는 것입니다.

echo strstr( $myvalue . ' ', ' ', true );

문자열에 단어가 하나만 있어도 항상 문자열의 첫 단어를 반환합니다.

대안은 다음과 같습니다.

$i = strpos($myvalue, ' ');
echo $i !== false ? $myvalue : substr( $myvalue, 0, $i );

또는 explode를 사용하면 대답을 너무 많이 사용하여 어떻게 해야하는지 지적하지 않아도됩니다.


넌 할 수있어

echo current(explode(' ',$myvalue));

비록 늦었지만 PHP는 이것에 대한 하나의 더 나은 해결책을 가지고 있습니다.

$words=str_word_count($myvalue, 1);
echo $words[0];

한 번의 적은 단계로 허용되는 답변과 유사합니다.

$my_value = 'Test me more';
$first_word = explode(' ',trim($my_value))[0];

//$first_word == 'Test'

문자열이 단어로 시작하는지 확실하지 않은 경우를 대비하여 ...

$input = ' Test me more ';
echo preg_replace('/(\s*)([^\s]*)(.*)/', '$2', $input); //Test

<?php
  $value = "Hello world";
  $tokens = explode(" ", $value);
  echo $tokens[0];
?>

explode를 사용하여 입력의 모든 단어를 가져오고 결과 배열의 첫 번째 요소를 출력하십시오.


split 함수를 사용하면 문자열에서 첫 번째 단어를 얻을 수 있습니다.

<?php
$myvalue ="Test me more";
$result=split(" ",$myvalue);
echo $result[0];
?>

strtok보다 빠르 extract거나 preg_*기능.


개인적으로 strsplit/ explode/ strtok단어 경계를 지원하지 않으므로 더 정확한 분할을 얻으려면 정규 표현식을 사용하십시오.\w

preg_split('/[\s]+/',$string,1);

이렇게하면 경계가있는 단어가 1로 제한됩니다.


$ input = "추가 테스트";
echo preg_replace ( "/ \ s. * $ /", "", $ input); // "테스트"

$string = ' Test me more ';
preg_match('/\b\w+\b/i', $string, $result); // Test
echo $result;

/* You could use [a-zA-Z]+ instead of \w+ if wanted only alphabetical chars. */
$string = ' Test me more ';
preg_match('/\b[a-zA-Z]+\b/i', $string, $result); // Test
echo $result;

감사합니다, Ciul


public function getStringFirstAlphabet($string){
    $data='';
    $string=explode(' ', $string);
    $i=0;
    foreach ($string as $key => $value) {
        $data.=$value[$i];
    }
    return $data;
}

문자열을 배열로 변환하지 않고 PHP 문자열 함수 substr을 사용하여 수행 할 수 있습니다.

 $string = 'some text here';
 $stringLength= strlen($string);
 echo ucfirst(substr($string,-$stringLength-1, 1));

// 출력 S


$str='<?php $myvalue = Test me more; ?>';
$s = preg_split("/= *(.[^ ]*?) /", $str,-1,PREG_SPLIT_DELIM_CAPTURE);
print $s[1];

문자열을 첫 단어와 나머지 문자열의 두 부분으로 토큰 화하는 함수입니다.

반환 값 : 그것은있을 것이다 firstremaining주요 $return각각 배열입니다. strpos( $title," ") !== false문자열에 단어가 하나만 있고 공백이없는 경우 첫 번째 검사 는 필수입니다.

function getStringFirstWord( $title ){

    $return = [];

    if( strpos( $title," ") !== false ) {

        $firstWord = strstr($title," ",true);
        $remainingTitle = substr(strstr($title," "), 1);

        if( !empty( $firstWord ) ) {
            $return['first'] = $firstWord;
        }
        if( !empty( $remainingTitle ) ) {
            $return['remaining'] = $remainingTitle;
        }
    }
    else {
        $return['first'] = $title;
    }

    return $return;
}

참고 URL : https://stackoverflow.com/questions/2476789/how-to-get-the-first-word-of-a-sentence-in-php

반응형