cómo permitir apóstrofes en expresiones regulares en php [cerrado]

Quiero verificar la cadena, que debe contener solo letras latinas, guiones y apóstrofes. La longitud debe ser 2-50. todo funciona, pero si una cadena contiene apóstrofo, la función devuelve falso.

private function validName($name)
{
    if(!preg_match("/^[a-zA-Z\'\-]{2,50}$/", $name))
        return false;
    return true;
}

¿Cómo incluir el apóstrofe en mi expresión regular? También probé estos

preg_match("/^[a-zA-Z'-]{2,50}$/", $name)
preg_match("/^[a-zA-Z\'-]{2,50}$/", $name)
preg_match("/^[a-zA-Z'\-]{2,50}$/", $name)

pero devuelve falso de todos modos

ACTUALIZAR:

Antes de ejecutar este método, filtro mi cadena con$name = htmlentities($name, ENT_QUOTES, "UTF-8");

Respuestas a la pregunta(1)

Su respuesta a la pregunta